/**
 * 
 */
package fr.gfi.agraf.persistence.dao;

import java.util.List;

import fr.gfi.agraf.exception.AgrafException;
import fr.gfi.agraf.persistence.entity.Utilisateur;

/**
 * @author Zakaria
 *
 */
public interface IUtilisateurDAO extends IAbstractGenericDAO<Utilisateur> {

	/**
	 * Recupere un utilisateur selon son adresse email, si elle existe
	 * 
	 * @return l'utilisateur concerné s'il existe sinon null
	 */
	Utilisateur getUtilisateurByEmail(final String email);

	/**
	 * Recupere un utilisateur selon son login et son password
	 * 
	 * @param login
	 * @param password
	 * @return
	 * @throws AgrafException
	 */
	Utilisateur getUtilisateurByIdentification(final String login, final String password);

	/**
	 * Récupere tous les utilisateurs actifs
	 * 
	 * @return
	 */
	List<Utilisateur> getAllUtilisateurActif();

	/**
	 * Récupere tous les utilisateurs inactifs
	 * 
	 * @return
	 */
	List<Utilisateur> getAllUtilisateurInactif();

	/**
	 * Récupére un utilisateur actif
	 * 
	 * @param id
	 * @return
	 */
	Utilisateur getUtilisateurActifById(final Long id);

	/**
	 * Recupere un utilisateur par identifiant
	 * 
	 * @param identifiant
	 * @return
	 */
	Utilisateur getUtilisateurByIdentifiant(final String identifiant);

	/**
	 * Récupere une liste d'utilisateur avec un profild id
	 * 
	 * @param id
	 * @return
	 */
	List<Utilisateur> getUtilisateursByProfilId(final Long id);

	/**
	 * Récupere les utilisateurs par id
	 * 
	 * @param ids
	 * @return
	 */
	List<Utilisateur> getUtilisateursByIdList(final List<Long> ids);

}
